var CompleteStatus = {
    incomplete: 'incomplete',
    complete: 'complete',
    future: 'future'
};
                           
function Month(year, month, travelSteps, calendarNotes, monthDto) {
    this._year = year;
    this._month = month;
    this._missingTravelDays = [];
    this._completeStatus = CompleteStatus.incomplete;
    this._days = [];

    if (monthDto) {
        var me = this;
        this._completeStatus = monthDto.completeStatus;
        this._daysInMonth = monthDto.days.select(function(dayDto) {
            return new Day(dayDto, me);
        });
    }
    else {
        this._daysInMonth = this._createDaysInCurrentMonth();
    }
    this._createMonth();
    if (travelSteps) {
        this._travelSteps = travelSteps;
        this._connectTravelStepsToDays();
    }

    if (calendarNotes) {
        this._connectCalendarNotesToDays(calendarNotes);
    }
    this._createDayIndex();
}
